home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / dskut / decode10.zip / 123.RUL next >
Text File  |  1992-12-07  |  19KB  |  1,006 lines

  1. ############################################################################
  2. #                                                                          #
  3. # 123.rul -- Decode It! rule file for Lotus Worksheet files                #
  4. #                                                                          #
  5. #                                                                          #
  6. # Please note: This rule file is provided as an example only.  While       #
  7. #              every effort has been made to validate the information      #
  8. #              presented here, Axiom Innovations takes no responsibility   #
  9. #              for the integrity of the data that results from using       #
  10. #              this example.                                               #
  11. #                                                                          #
  12. ############################################################################
  13.  
  14.  
  15. RECORD RECORD_123
  16.  
  17. # 123 Record Header
  18.  
  19. SHORT   RecordType
  20.  
  21. SHORT   RecordLength
  22.  
  23.  
  24. # Beginning of File
  25. WHILE  RECORD_123.RecordType  <=>  0
  26. RECORD  BeginOfFile
  27.  
  28.     # Id should equal 1028 or 1030
  29.     XSHORT  Id
  30.  
  31.     WHILE  RECORD_123.BeginOfFile.Id  <>  1028 
  32.     BEGIN
  33.  
  34.         WHILE  RECORD_123.BeginOfFile.Id  <>  1030
  35.           EXIT
  36.  
  37.     END
  38.  
  39.     RETURN
  40.  
  41. END
  42.  
  43.  
  44. # End of file
  45. WHILE  RECORD_123.RecordType  <=>  1
  46. RECORD  EndOfFile
  47.  
  48.     # Decode bytes after Lotus EOF
  49.     ASCII  AfterEOF  -1
  50.  
  51.     EXIT
  52.  
  53. END
  54.  
  55.  
  56. # Calculation method
  57. WHILE  RECORD_123.RecordType  <=>  2
  58. BEGIN
  59.  
  60.     # 0 = manual mode, FF = automatic
  61.     XTINY  CalcMode
  62.  
  63.     RETURN
  64.  
  65. END
  66.  
  67.  
  68. # Calculation order
  69. WHILE  RECORD_123.RecordType  <=>  3
  70. BEGIN
  71.  
  72.     # 0 = natural, 1 = by column, FF = by row
  73.     XTINY  CalcOrder
  74.  
  75.     RETURN
  76.  
  77. END
  78.  
  79.  
  80. # Split window type
  81. WHILE  RECORD_123.RecordType  <=>  4
  82. BEGIN
  83.  
  84.     # 0 = not split, 1 = vertical split, FF = horizontal split
  85.     XTINY  SplitType
  86.  
  87.     RETURN
  88.  
  89. END
  90.  
  91.  
  92. # Split window sync
  93. WHILE  RECORD_123.RecordType  <=>  5
  94. BEGIN
  95.  
  96.     # 0 = not synchronized, FF = synchronized
  97.     XTINY  SyncType
  98.  
  99.     RETURN
  100.  
  101. END
  102.  
  103.  
  104. # Active worksheet range (start col, start row, end col, end row)
  105. WHILE  RECORD_123.RecordType  <=>  6
  106. BEGIN
  107.  
  108.     SHORT  ActiveRange  4
  109.  
  110.     RETURN
  111.  
  112. END
  113.  
  114.  
  115. # Window 1 and 2
  116. BEGIN
  117.  
  118.     WHILE  RECORD_123.RecordType  <>  7
  119.     BEGIN
  120.  
  121.         WHILE  RECORD_123.RecordType  <>  9
  122.             RESCIND
  123.  
  124.     END
  125.  
  126.     RECORD  Window
  127.  
  128.         SHORT  CursorPosition  2
  129.  
  130.         #####################################################################
  131.         #                                                                   #
  132.         #  Each bit of the cell format byte is used as follows:             #
  133.         #                                                                   #
  134.         #  Bit  Description     Value   Meaning                             #
  135.         #  ---  -----------     -----   -------                             #
  136.         #   7   protection        1     protected                           #
  137.         #                         0     unprotected                         #
  138.         #                                                                   #
  139.         #  4-6  format type       0     fixed                               #
  140.         #                         1     scientific notation                 #
  141.         #                         2     currency                            #
  142.         #                         3     percent                             #
  143.         #                         4     comma                               #
  144.         #                        5-6    unused                              #
  145.         #                         7     ** special ** (see below)           #
  146.         #                                                                   #
  147.         #  0-3  decimal places   0-15   ** Only if format type = 0-6 **     #
  148.         #       special format          if format type = 7 :                #
  149.         #                         0       +/-                               #
  150.         #                         1       general                           #
  151.         #                         2       day-month-year                    #
  152.         #                         3       day-month                         #
  153.         #                         4       month-year                        #
  154.         #                         5       text                              #
  155.         #                         6       hidden                            #
  156.         #                         7       date : hour-min-sec               #
  157.         #                         8       date : hour-min                   #
  158.         #                         9       date : international 1            #
  159.         #                        10       date : international 2            #
  160.         #                        11       time : international 1            #
  161.         #                        12       time : international 2            #
  162.         #                       13-14     not used                          #
  163.         #                        15       default                           #
  164.         #                                                                   #
  165.         #####################################################################
  166.          
  167.         XTINY  Format
  168.  
  169.         TINY   Unused1
  170.  
  171.         SHORT  DefaultWidth
  172.  
  173.         SHORT  ScreenSize  2
  174.  
  175.         SHORT  StartPosition  2
  176.  
  177.         SHORT  TitleSize  2
  178.  
  179.         SHORT  TitleStart  2
  180.  
  181.         SHORT  TopLeftPosition  2
  182.  
  183.         SHORT  NumberCols
  184.  
  185.         TINY   Unused2  2
  186.  
  187.         RETURN
  188.  
  189.     END  RECORD_123.RecordLength
  190.  
  191. END
  192.  
  193.  
  194. # Column width (for window 1)
  195. WHILE  RECORD_123.RecordType  <=>  8
  196. RECORD  ColWidth1
  197.  
  198.     XSHORT  Id
  199.  
  200.     XTINY   Width
  201.  
  202.     RETURN
  203.  
  204. END
  205.  
  206.  
  207. # Column width (for window 2)
  208. WHILE  RECORD_123.RecordType  <=>  10
  209. RECORD  ColWidth2
  210.  
  211.     XSHORT  Id
  212.  
  213.     XTINY   Width
  214.  
  215.     RETURN
  216.  
  217. END
  218.  
  219.  
  220. # Named range (start col, start row, end col, end row)
  221. WHILE  RECORD_123.RecordType  <=>  11
  222. RECORD  NamedRange
  223.  
  224.     ASCII  Name  16
  225.     (OMIT0)  RECORD_123.NamedRange.Name
  226.  
  227.     SHORT  Range  4
  228.  
  229.     RETURN
  230.  
  231. END
  232.  
  233.  
  234. # Blank Cell
  235. WHILE  RECORD_123.RecordType  <=>  12
  236. RECORD  BlankCell
  237.  
  238.     # Cell Format (see above)
  239.     XTINY  Format
  240.  
  241.     SHORT  Column
  242.  
  243.     SHORT  Row
  244.  
  245.     RETURN
  246.  
  247. END
  248.  
  249.  
  250. # Integer number cell
  251. WHILE  RECORD_123.RecordType  <=>  13
  252. RECORD  Integer
  253.  
  254.     # Cell Format (see above)
  255.     XTINY  Format
  256.  
  257.     SHORT  Column
  258.  
  259.     SHORT  Row
  260.  
  261.     SHORT  Value
  262.  
  263.     RETURN
  264.  
  265. END
  266.  
  267.  
  268. # Floating point number
  269. WHILE  RECORD_123.RecordType  <=>  14
  270. RECORD  Number
  271.  
  272.     # Cell Format (see above)
  273.     XTINY   Format
  274.  
  275.     SHORT   Column
  276.  
  277.     SHORT   Row
  278.  
  279.     DFLOAT  Value
  280.  
  281.     RETURN
  282.  
  283. END
  284.  
  285.  
  286. # Label cell
  287. WHILE  RECORD_123.RecordType  <=>  15
  288. RECORD  Label
  289.  
  290.     # Cell Format (see above)
  291.     XTINY  Format
  292.  
  293.     SHORT  Column
  294.  
  295.     SHORT  Row
  296.  
  297.     # Label format prefix:
  298.     #   | = printer command, \ = repeating, ' = left alignment,
  299.     #   " = right alignment, ^ = centered.                    
  300.     ASCII  LabelPrefix
  301.  
  302.     ASCII  Label  -1
  303.  
  304.     RETURN
  305.  
  306. END  RECORD_123.RecordLength
  307.  
  308.  
  309. # Formula cell
  310. WHILE  RECORD_123.RecordType  <=>  16
  311. RECORD  Formula
  312.  
  313.     # Cell Format (see above)
  314.     XTINY   Format
  315.  
  316.     SHORT   Column
  317.  
  318.     SHORT   Row
  319.  
  320.     DFLOAT  Value
  321.  
  322.     SHORT   Size
  323.  
  324.     # Formulas are stored in postfix (reverse polish) notation
  325.     RECORD  Postfix  -1
  326.  
  327.       #### The most frequently used operations are indicated ####
  328.  
  329.       XTINY  OpCode
  330.  
  331.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  0
  332.         DFLOAT  Constant
  333.  
  334.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  1
  335.       RECORD  Variable
  336.  
  337.         # A '1' in bit 15 indicates relative cell reference
  338.         # A '0' in bit 15 indicates absolute cell reference
  339.         XSHORT  Coordinate  2
  340.  
  341.       END
  342.  
  343.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  2
  344.  
  345.         # (start col, start row, end col, end row)
  346.         XSHORT  Range  4
  347.  
  348.